package com.dys.teststreamapi11;

import java.util.stream.Stream;

/**
 * @className: com.dys.teststreamapi11.StreamAPITest
 * @description: Stream流的函数拼接
 * @author: pine cone
 * @version: v1.0.0
 * @createTime: 2024/09/01 下午4:39
 */
public class StreamAPITest04 {
    /**
     * 这是一个main()方法,是应用程序的入口
     *
     * @param args 方法的形参列表,是一个字符串数组,包含了从命令行传递给程序的参数
     */
    public static void main(String[] args) {
        streamSkip();
    }

    /**
     * 终结方法：遍历的方法
     */
    private static void streamForeach() {
        Stream.of("a1", "a2", "a3", "a4", "a5", "a6", "a7").forEach(System.out::println);
    }

    /**
     * 终结方法：统计流中的个数
     */
    private static void streamCount() {
        long count = Stream.of("a1", "a2", "a3", "a4", "a5", "a6", "a7").count();
        System.out.println(count);
    }

    /**
     * 过滤方法
     */
    private static void streamFilter() {
        Stream.of("a1", "a2", "a3", "aa", "bb", "cc", "dd").filter(s -> s.contains("a")).forEach(System.out::println);
    }

    /**
     * limit方法可以对流进行截取处理，支取前n个数据
     * 参数是一个long类型的数值，如果集合当前长度大于参数就进行截取，否则不操作：
     */
    private static void streamLimit() {
        Stream.of("a1", "a2", "a3", "aa", "bb", "cc", "dd").limit(5).forEach(System.out::println);
    }

    /**
     * 跳过前面几个元素，可以使用skip方法获取一个截取之后的新流：
     */
    private static void streamSkip() {
        Stream.of("a1", "a2", "a3", "aa", "bb", "cc", "dd").skip(3).forEach(System.out::println);
    }

}
